In many scenarios, it is as important to analyze images and perform object detection quickly as it is to perform object detection accurately. A common application where it is desirable to perform object detection both rapidly and accurately is face detection. For instance, many mobile computing devices include cameras, wherein it is desirable to quickly locate faces in frames captured by a camera (e.g., for the purposes of auto-focusing).
Conventional techniques for analyzing images and detecting certain objects therein, however, remain relatively slow. Specifically, detection time for most detection systems is best measured in seconds per frame, rather than frames per second.
Speed at which objects can be detected by in images has been improved in object detection systems through utilization of cascaded detectors/processing. Cascaded detectors refer to a sequence of detectors, wherein accuracy of a detector in the cascaded sequence of detectors increases as position in the sequence advances, while computation time to execute a detector in the cascaded sequence of detectors likewise increases as position in the sequence increases. Accordingly, a first detector in the cascaded sequence of detectors is the fastest and least accurate detector, while the last detector in the sequence is the slowest and most accurate detector. Cascaded processing refers to a similar approach, where processing is undertaken in stages over respective subwindows of an image, and wherein subwindows are rejected as candidates during such stages. Accordingly, a subwindow rejected during a first stage will have a relatively small amount of processing undertaken thereover, while a subwindow rejected during a later stage will have been analyzed with a relatively large amount of processing undertaken thereover.
When performing object detection in an image, it is desirable to minimize an amount of processing required to identify an object, without sacrificing accuracy. Thus, in conventional staged detection systems, a first detector in the cascaded sequence of detectors (or a first process executed over a subwindow in a cascade of processes) is tasked with analyzing each subwindow, rejecting subwindows that certainly do not include the object of interest, and doing so relatively quickly. Subsequently, a second detector in the cascaded sequence of detectors (or a second process in a cascade of processes) is executed over all subwindows not rejected in earlier stages; this process continues until all subwindows in the image have been rejected (and thus, the object does not exist in the image) or until the last detector in the cascaded sequence of detectors (or the last process in the cascade of processes) indicates that one or more subwindows in the image include the object of interest. While the process set forth above has increased speed in which object identification can be undertaken, the process remains relatively slow, due to the large number of subwindows in a given image (e.g., several thousand).